package C.e.try_catch;
/**java异常处理机制：try...catch
 * try{
 * 代码片段
 * }catch（XXXException e）{
 *     当try的代码片段出现XXXException时的补救措施
 * }
  */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("开始");
        try {
            String line=null;
            System.out.println(line.length());
            String line1="";//因为上一句发生了异常，所以try块中此句及以下代码都不会被执行了
            System.out.println(line1.charAt(0));
            String line2="abc";
            System.out.println(Integer.parseInt(line2));
       }catch (NullPointerException e){//捕获空指针异常
            System.out.println("出现并解决了异常");//针对try中出现空指针异常的解决方法-处理方法
      }catch (StringIndexOutOfBoundsException e){//捕获字符串下标越界异常
           System.out.println("出现并解决了字符串下标越界异常");//针对try中出现字符串下标越界异常-处理方法

        //若多个异常具有相同处理方式时，可以合并到一个catch中处理
        //}catch(NullPointerException | StringIndexOutOfBoundsException e){
           // System.out.println("出现空指针或字符串下标越界异常并解决了");
        }
        catch (Exception e){//可以在最后捕获超类型异常，凡是该异常的子类型都可以被捕获并处理
            System.out.println("反正是出了个错并解决");
        }
        System.out.println("结束");
    }
}
